The automatic orchestration and composition of software services, such as web services that are already micro-services is uncommon, and state of the art approaches rely upon heavy annotations of the web services.
Existing techniques seeking to automate the orchestration and composition of web service fall into two broad groups:                Those that do not make any decision: all the possibilities to be executed are executed, and the result is equivalent due to set semantics.        Those that make decisions based on formal logic, which in most advanced cases have two elements:        a. Some metadata about the quality of the service that is provided by the service.        b. An orchestration algorithm that uses such metadata to find a plan adjusting to the quality requested by the user or a set of rules.        
The problem is that the orchestration is not autonomous, and the annotations are too heavy. It is difficult to annotate new services, and execution planning is onerous. There are some scenarios in which set semantics cannot be applied, and in some other scenarios set semantics may imply a huge computational cost. Therefore, it is desirable to find a system for orchestrating software services in a more selective manner.